﻿var currentNode = null;

function RowDblClick(sender, eventArgs) {
    sender.get_masterTableView().editItem(eventArgs.get_itemIndexHierarchical());
}
function PopUpShowingCenter(sender, eventArgs) {
    var popUp;
    popUp = eventArgs.get_popUp();
    var gridWidth = sender.get_element().offsetWidth;
    var gridHeight = sender.get_element().offsetHeight;
    var popUpWidth = popUp.style.width.substr(0, popUp.style.width.indexOf("px"));
    var popUpHeight = popUp.style.height.substr(0, popUp.style.height.indexOf("px"));
    popUp.style.left = ((gridWidth - popUpWidth) / 2 + sender.get_element().offsetLeft).toString() + "px";
    popUp.style.top = ((gridHeight - popUpHeight) / 2 + sender.get_element().offsetTop).toString() + "px";
}

function openRadWin(formname, popname) {
    var oWnd = radopen(formname, popname);
}

function onRowDropping(sender, args) {
    if (currentNode) {
        $get("nodeValueHiddenField").value = currentNode.get_value();
        args.set_destinationHtmlElement("nodeValueHiddenField");
    }
    else {
        args.set_cancel(true);
    }
}

function dropOnTree(args) {
    var text = "";

    if (args.get_sourceNodes().length) {
        var i;
        for (i = 0; i < args.get_sourceNodes().length; i++) {
            var node = args.get_sourceNodes()[i];
            text = text + ', ' + node.get_text();
        }
    }
}

function onNodeDragging(sender, args) {
    var target = args.get_htmlElement();

    if (!target) return;

    if (target.tagName == "INPUT") {
        target.style.cursor = "hand";
    }

    var grid = isMouseOverGrid(target)
    if (grid) {
        grid.style.cursor = "hand";
    }
}


function onNodeMouseOver(sender, args) {
    currentNode = args.get_node();
}

function onNodeMouseOut(sender, args) {
    currentNode = null;
}

function ShowToolTip() {
    window.setTimeout(function() {
        var tooltip = $find("RadToolTip1");
        //API: show the tooltip
        tooltip.show();
    }, 10);

}
function CheckIfShow(sender, args) {
    var summaryElem = document.getElementById("ValidationSummary1");

    //check if summary is visible
    if (summaryElem.style.display == "none") {
        //API: if there are no errors, do not show the tooltip
        args.set_cancel(true);
    }
}
function dokeyup(obj) {
    var key = event.keyCode;
    if (key != 37 & key != 39 & key != 110) {
        var value = obj.value;
        var svals = value.split("."); //แยกทศนิยมออก
        var sval = svals[0]; //ตัวเลขจำนวนเต็ม

        var n = 0;
        var result = "";
        var c = "";
        for (a = sval.length - 1; a >= 0; a--) {
            c = sval.charAt(a);
            if (c != ',') {
                n++;
                if (n == 4) {
                    result = "," + result;
                    n = 1;
                };
                result = c + result;
            };
        };

        if (svals[1]) {
            result = result + '.' + svals[1];
        };

        obj.value = result;
    };
};

//ให้ text รับค่าเป็นตัวเลขอย่างเดียว
function checknumber() {
    key = event.keyCode;
    if (key != 46 & (key < 48 || key > 57)) {
        event.returnValue = false;
    };
};

function slideConfig(uniqudId, dir) {
    var opposite = (dir == 'Down' ? 'Up' : 'Down');

    $telerik.$(".moduleDivSlimContent")["slide" + dir](300);
    $telerik.$(".moduleDivSlimCollapsible span.configButton")
		.removeClass("toggleUp")
		.removeClass("toggleDown")
		.addClass("toggle" + opposite);

    $telerik.$(".moduleDivSlimCollapsible")[0].href = "javascript:slideConfig('" + uniqudId + "','" + opposite + "');";
    $telerik.$("input[name='" + uniqudId + "']").val(dir == "Down" ? "true" : "false");
}

function nodeClicking(sender, args) {
    var comboBox = $find("<%= cmbJobSite.ClientID %>");

    var node = args.get_node()

    comboBox.set_text(node.get_text());

    comboBox.trackChanges();
    comboBox.get_items().getItem(0).set_value(node.get_text());
    comboBox.commitChanges();

    comboBox.hideDropDown();
}

function StopPropagation(e) {
    if (!e) {
        e = window.event;
    }

    e.cancelBubble = true;
}

function OnClientDropDownOpenedHandler(sender, eventArgs) {
    var tree = sender.get_items().getItem(0).findControl("RadTreeView1");
    var selectedNode = tree.get_selectedNode();
    if (selectedNode) {
        selectedNode.scrollIntoView();
    }
}

function onTextChange(sender) {
    if (sender.get_value() == "") {
        sender.set_text("");
    }
}

function MessageAlert(strMessage) {
    window.alert(strMessage); 
}

//Check Date *******************************
function beginchk(ip, ek) {//เริ่มต้นการรับพารามิเตอร์จากคีย์บอร์ด

    if ((ek.keyCode > 47 && ek.keyCode < 58) || ek.keyCode == 8 || ek.keyCode == 46 || ek.keyCode == 144 || ek.keyCode == 111 || (ek.keyCode > 95 && ek.keyCode < 106) || (ek.keyCode > 36 && ek.keyCode < 41)) {//อนุญาตให้พิมพ์ตัวเลข Delete Backspace Left Right Up Down

        if (ip.value.match("^([0-9]{2})/([0-9]{2})//$")) {
            ip.value = ip.value.substring(0, 6);
            return true;

        } else if (ip.value.match("^([0-9]{2})/([0-9]{2})$") && ek.keyCode != 8) {//ตรวจสอบพารามิเตอร์โดยเลือกใช้ Regular Expression
            ip.value = ip.value + "/";
            return true;

        } else if (ip.value.match("^([0-9]{2})//$") && ek.keyCode != 8) {
            ip.value = ip.value.substring(0, 3);
            return true;

        } else if (ip.value.match("^([0-9]{2})$") && ek.keyCode != 8) {//ตรวจสอบพารามิเตอร์โดยเลือกใช้ Regular Expression
            ip.value = ip.value + "/";
            return true;

        } else if (ip.value.match("^([0-9]{2})/([0-9]{2})/([0-9]{4})$")) {//ตรวจสอบพารามิเตอร์โดยเลือกใช้ Regular Expression
            isDate(ip.value); //ส่งพารามิเตอร์ไปตรวจสอบที่ฟังก์ชั่น isDate ว่ากรอกวันเดือนปีถูกต้องหรือไม่
            return true;

        } else if (ip.value.length > 10) {//เงื่อนไขนี้ตรวจสอบว่าห้ามกรอกข้อมูลเกินสิบหลักถ้าเกินให้ตัดตัวสุดท้ายทิ้ง
            ip.value = ip.value.substring(0, 10);
            isDate(ip.value);
            return true;
        }

    } else {//แจ้งเตือนถ้าคีย์ข้อความที่ไม่ใช่ตัวเลข
        alert('กรอกได้เฉพาะค่าตัวเลข');
        return true;
    }
}

//เริ่มต้นเช็คค่าวันที่ที่กรอกลงมา
//Date Validation just copy and paste this cod

var dtCh = "/";
var minYear = 1900;
var maxYear = 2100;
var minYearA = 1900 + 543; //ค่าตัวแปรที่สองเอาไว้โชว์ค่าพุทธศักราชไทยอะครับ ^^
var maxYearA = 2100 + 543; //ค่าตัวแปรที่สองเอาไว้โชว์ค่าพุทธศักราชไทยอะครับ ^^

function isInteger(s)//ฟังก์ชั่นเช็คค่าตัวเลข
{
    var i;
    for (i = 0; i < s.length; i++) {
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}

function stripCharsInBag(s, bag)//เช็ครูปแบบ
{
    var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++) {
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function daysInFebruary(year)//เช็คค่าวันที่ 29 กุมภาพันธ์ ในแต่ละปี
{
    // February has 29 days in any year evenly divisible by four,
    // EXCEPT for centurial years which are not also divisible by 400.
    return (((year % 4 == 0) && ((!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28);
}
function DaysArray(n) //เช็ควันสุดท้ายของแต่ละเดือน
{
    for (var i = 1; i <= n; i++) {
        this[i] = 31
        if (i == 4 || i == 6 || i == 9 || i == 11) { this[i] = 30 }
        if (i == 2) { this[i] = 29 }
    }
    return this
}

function isDate(dtStr)//ฟังก์ชั่นหลักในการเช็คค่าวันที่ ถ้ากรอกวันเดือนปีผิดจะแจ้งเตือนผู้ใช้งาน
{
    var daysInMonth = DaysArray(12)
    var pos1 = dtStr.indexOf(dtCh)
    var pos2 = dtStr.indexOf(dtCh, pos1 + 1)
    var strDay = dtStr.substring(0, pos1)
    var strMonth = dtStr.substring(pos1 + 1, pos2)
    var strYear = dtStr.substring(pos2 + 1)
    strYr = strYear

    if (strDay.charAt(0) == "0" && strDay.length > 1) strDay = strDay.substring(1)//ตัดเลข0

    if (strMonth.charAt(0) == "0" && strMonth.length > 1) strMonth = strMonth.substring(1)//ตัดเลข0

    for (var i = 1; i <= 3; i++) {

        if (strYr.charAt(0) == "0" && strYr.length > 1) strYr = strYr.substring(1)//ตัดเลข0
    }
    day = parseInt(strDay)
    month = parseInt(strMonth)
    year = parseInt(strYr)
    year = year - 543;

    if (pos1 == -1 || pos2 == -1) {
        alert("The date format should be : dd/mm/yyyy")
        return false
    }

    if (strDay.length < 1 || day < 1 || day > 31 || (month == 2 && day > daysInFebruary(year)) || day > daysInMonth[month]) {
        alert("Please enter a valid day")
        return false
    }

    if (strMonth.length < 1 || month < 1 || month > 12) {
        alert("Please enter a valid month")
        return false
    }

    if (strYear.length != 4 || year == 0 || year < minYear || year > maxYear) {
        alert("Please enter a valid 4 digit year between " + minYearA + " and " + maxYearA)
        return false
    }

    if (dtStr.indexOf(dtCh, pos2 + 1) != -1 || isInteger(stripCharsInBag(dtStr, dtCh)) == false) {
        alert("Please enter a valid date")
        return false
    }
    return true
}

function UpdateItemCountField(sender, args) {
    //set the footer text
    sender.get_dropDownElement().lastChild.innerHTML = "ทั้งหมด " + sender.get_items().get_count() + " รายการ";
}
// *********************************
